package mx.ipn.presentacion.empleado;

import mx.ipn.presentacion.ConexionConNegocios;
import mx.ipn.presentacion.Utilerias;
import mx.ipn.presentacion.empleado.ui.*;
import mx.ipn.presentacion.VentanaInicio;

import com.trolltech.qt.gui.*;

import mx.ipn.to.*;

public class EmpleadoPrincipal extends QMainWindow {
	Ui_EmpleadoPrincipal ui = new Ui_EmpleadoPrincipal();
	VentanaInicio ventanaInicio = null;

	ComportamientoAsistencia EstablecerAsistencia = null;
	ComportamientoAsistencia ConsultarAsistencia = null;

	ComportamientoCuenta AgregarCuenta = null;
	ComportamientoCuenta BajaCuenta = null;
	ComportamientoCuenta ConsultarCuenta = null;
	ComportamientoCuenta ModificarCuenta = null;

	ComportamientoDiaFestivo2 AgregarDiaFestivo = null;
	ComportamientoDiaFestivo2 ModificarDiaFestivo = null;
	ComportamientoDiaFestivo2 ConsultarDiaFestivo = null;
	ComportamientoDiaFestivo2 BajaDiaFestivo = null;

	ComportamientoEmpleado AgregarEmpleado = null;
	ComportamientoEmpleado ModificarEmpleado = null;
	ComportamientoEmpleado ConsultarEmpleado = null;
	ComportamientoEmpleado BajaEmpleado = null;

	ComportamientoHorario CrearHorario = null;
	ComportamientoHorario ModificarHorario = null;
	ComportamientoHorario ConsultarHorario = null;
	ComportamientoHorario EliminarHorario = null;

	Ui_Puesto AgregarPuesto = null;
	Ui_Puesto ModificarPuesto = null;
	Ui_Puesto BajaPuesto = null;

	ComportamientoTurno AgregarTurno = null;
	ComportamientoTurno ConsultarTurno = null;
	ComportamientoTurno BajaTurno = null;
	ComportamientoTurno ModificarTurno = null;

	UsuarioTO usuarioTO;
	ClienteTO[] clientes;
	DireccionTO[] direcciones;
	java.util.ArrayList<PuestoTO> puestoTOList;
	TipoEmpleadoTO tiposEmpleadoTO[];

	PuestoTO[] puestoTOAlta;
	PuestoTO puesto1TOAlta;
	PuestoTO puesto2TOAlta;
	PuestoTO puesto3TOAlta;
	PuestoTO puesto4TOAlta;

	PuestoTO[] puestoTOCambio;
	PuestoTO puesto1TOCambio;
	PuestoTO puesto2TOCambio;
	PuestoTO puesto3TOCambio;
	PuestoTO puesto4TOCambio;

	PuestoTO[] puestoTOBaja;
	PuestoTO puesto1TOBaja;
	PuestoTO puesto2TOBaja;
	PuestoTO puesto3TOBaja;
	PuestoTO puesto4TOBaja;

	public EmpleadoPrincipal(UsuarioTO usuarioTO,VentanaInicio ventanaInicio) {
		// pone la interfaz de usuario
		this.ventanaInicio = ventanaInicio;
		ui.setupUi(this);
		this.usuarioTO = usuarioTO;
		preparaVentana(this.usuarioTO);

		// centra la ventana de acorde a la resolucion del monitor
		Utilerias.centrarVentana(this);

		// recibe e imprime el nombre de usuario logueado
		this.usuarioTO = usuarioTO;
		QMessageBox.information(this, "Bienvenido", "Bienvenido "
				+ usuarioTO.getNombreUsuario() + ".",
				QMessageBox.StandardButton.Ok, QMessageBox.StandardButton.Ok);

		// setPropiedadesDockets();
		// desactivarDockets();
		conectarEventosMenu();
	}

	private void conectarEventosMenu() {

		ui.actionAgregarEmp.triggered.connect(this, "desactivaDockets()");
		ui.actionBajaEmp.triggered.connect(this, "desactivaDockets()");
		ui.actionConsultarEmp.triggered.connect(this, "desactivaDockets()");
		ui.actionModificaEmp.triggered.connect(this, "desactivaDockets()");

		ui.actionAgregarEmp.triggered.connect(this, "cargarAgregarEmpleado()");
		ui.actionBajaEmp.triggered.connect(this, "cargarBajaEmpleado()");
		ui.actionConsultarEmp.triggered.connect(this,
				"cargarConsultarEmpleado()");
		ui.actionModificaEmp.triggered.connect(this,
				"cargarModificarEmpleado()");

		ui.actionAgregaFestivo.triggered.connect(this, "desactivaDockets()");
		ui.actionConsultarFestivo.triggered.connect(this, "desactivaDockets()");
		ui.actionModificarFestivo.triggered.connect(this, "desactivaDockets()");
		ui.actionQuitarFestivo.triggered.connect(this, "desactivaDockets()");

		ui.actionAgregaFestivo.triggered.connect(this,
				"cargarAgregarDiaFestivo()");
		ui.actionConsultarFestivo.triggered.connect(this,
				"cargarConsultarDiaFestivo()");
		ui.actionModificarFestivo.triggered.connect(this,
				"cargarModificarDiaFestivo()");
		ui.actionQuitarFestivo.triggered
				.connect(this, "cargarBajaDiaFestivo()");

		ui.actionAgregarTurno.triggered.connect(this, "desactivaDockets()");
		ui.actionBajaTurno.triggered.connect(this, "desactivaDockets()");
		ui.actionModificarTurno.triggered.connect(this, "desactivaDockets()");
		ui.actionConsultarTurno.triggered.connect(this, "desactivaDockets()");

		ui.actionAgregarTurno.triggered.connect(this, "cargarAgregarTurno()");
		ui.actionBajaTurno.triggered.connect(this, "cargarBajaTurno()");
		ui.actionModificarTurno.triggered.connect(this,
				"cargarModificarTurno()");
		ui.actionConsultarTurno.triggered.connect(this,
				"cargarConsultarTurno()()");

		ui.actionAgregarUsuario.triggered.connect(this, "desactivaDockets()");
		ui.actionBajaUsuario.triggered.connect(this, "desactivaDockets()");
		ui.actionConsultarUsuario.triggered.connect(this, "desactivaDockets()");
		ui.actionModificarUsuario.triggered.connect(this, "desactivaDockets()");

		ui.actionAgregarUsuario.triggered
				.connect(this, "cargarAgregarCuenta()");
		ui.actionModificarUsuario.triggered.connect(this,
				"cargarModificarCuenta()");
		ui.actionBajaUsuario.triggered.connect(this, "cargarBajaCuenta()");
		ui.actionConsultarUsuario.triggered.connect(this,
				"cargarConsultarCuenta()");

		
		  ui.actionCrearHorario.triggered.connect(this, "desactivaDockets()");
		  ui.actionEliminarHorario.triggered.connect(this, "desactivaDockets()");
		  ui.actionModificarHorario.triggered.connect(this, "desactivaDockets()");
		  ui.actionConsultarHorario.triggered.connect(this, "desactivaDockets()");
		  
		  ui.actionCrearHorario.triggered.connect(this, "cargarEstablecerHorario()");
		  ui.actionEliminarHorario.triggered.connect(this, "cargarBajaHorario()");
		  ui.actionModificarHorario.triggered.connect(this, "cargarModificarHorario()");
		  ui.actionConsultarHorario.triggered.connect(this, "cargarConsultarHorario()");
		  

		ui.actionEstablecerAsistencia.triggered.connect(this,
				"desactivaDockets()");
		ui.actionRemoverAsistencia.triggered
				.connect(this, "desactivaDockets()");
		ui.actionConsultarAsistencia.triggered.connect(this,
				"desactivaDockets()");

		ui.actionEstablecerAsistencia.triggered.connect(this,
				"cargarEstablecerAsistencia()");
		ui.actionConsultarAsistencia.triggered.connect(this,
				"cargarConsultarAsistencia()");

		ui.actionAgregarPuesto.triggered.connect(this, "desactivaDockets()");
		ui.actionModificarPuesto.triggered.connect(this, "desactivaDockets()");
		ui.actionBajaPuesto.triggered.connect(this, "desactivaDockets()");

		ui.actionAgregarPuesto.triggered.connect(this, "cargarAgregarPuesto()");
		ui.actionModificarPuesto.triggered.connect(this,
				"cargarModificarPuesto()");
		ui.actionBajaPuesto.triggered.connect(this, "cargarBajaPuesto()");
	}

	private void preparaVentana(UsuarioTO usuarioTO) {

		ui.actionConsultarHorario.setEnabled(true);
		ui.actionConsultarEmp.setEnabled(true);
		ui.actionConsultarUsuario.setEnabled(true);
		ui.actionModificarUsuario.setEnabled(true);
		ui.actionConsultarAsistencia.setEnabled(true);

		ui.actionVentanaAsistencia.setVisible(false);
		ui.actionVentanaDiaFestivo.setVisible(false);
		ui.actionVentanaEmpleado.setVisible(false);
		ui.actionVentanaHorario.setVisible(false);
		ui.actionVentanaPuesto.setVisible(false);
		ui.actionVentanaTurno.setVisible(false);
		ui.actionVentanaUsuario.setVisible(false);

		if (usuarioTO.getGrupoUsuarioTO().getNombre().equals("administrador")) {
			ui.actionAgregarEmp.setEnabled(true);
			ui.actionBajaEmp.setEnabled(true);

			ui.actionModificaEmp.setEnabled(true);

			ui.actionAgregaFestivo.setEnabled(true);
			ui.actionConsultarFestivo.setEnabled(true);
			ui.actionModificarFestivo.setEnabled(true);
			ui.actionQuitarFestivo.setEnabled(true);

			ui.actionAgregarTurno.setEnabled(true);
			ui.actionBajaTurno.setEnabled(true);
			ui.actionModificarTurno.setEnabled(true);
			ui.actionConsultarTurno.setEnabled(true);

			ui.actionAgregarUsuario.setEnabled(true);
			ui.actionBajaUsuario.setEnabled(true);

			ui.actionCrearHorario.setEnabled(true);
			ui.actionEliminarHorario.setEnabled(true);
			ui.actionModificarHorario.setEnabled(true);
			ui.actionConsultarHorario.setEnabled(true);

			ui.menuPuesto.setEnabled(true);

			ui.actionEstablecerAsistencia.setEnabled(true);
			ui.actionRemoverAsistencia.setEnabled(true);

		} else if (usuarioTO.getGrupoUsuarioTO().getNombre().equals(
				"supervisor")) {

			ui.actionAgregarEmp.setVisible(false);
			ui.actionBajaEmp.setVisible(false);
			ui.actionModificaEmp.setVisible(false);
			ui.actionConsultarEmp.setEnabled(true);

			ui.actionAgregaFestivo.setVisible(false);
			ui.actionModificarFestivo.setVisible(false);
			ui.actionQuitarFestivo.setVisible(false);
			ui.actionConsultarFestivo.setEnabled(true);

			ui.actionAgregarTurno.setVisible(false);
			ui.actionBajaTurno.setVisible(false);
			ui.actionModificarTurno.setVisible(false);
			ui.actionConsultarTurno.setEnabled(true);

			ui.actionCrearHorario.setEnabled(true);
			ui.actionEliminarHorario.setEnabled(true);
			ui.actionModificarHorario.setEnabled(true);

			ui.actionEstablecerAsistencia.setEnabled(true);
			ui.actionRemoverAsistencia.setEnabled(true);

		} else {

			ui.menuEmpleado.setEnabled(false);

			ui.menuDiaFestivo.setEnabled(false);

			ui.menuTurno.setEnabled(false);

			ui.actionAgregarUsuario.setVisible(false);
			ui.actionConsultarUsuario.setVisible(false);
			ui.actionBajaUsuario.setVisible(false);

			ui.actionCrearHorario.setVisible(false);
			ui.actionEliminarHorario.setVisible(false);
			ui.actionModificarHorario.setVisible(false);

			ui.actionEstablecerAsistencia.setVisible(false);
			ui.actionRemoverAsistencia.setVisible(false);
		}

	}

	public void cargarAgregarPuesto() {
		desactivaDockets();
		if (AgregarPuesto == null) {
			AgregarPuesto = new Ui_Puesto();
			AgregarPuesto.setupUi((QWidget) this.centralWidget());
			this.setWindowTitle("Módulo Empleado");
			// this.setMinimumSize(550, 450);

			tiposEmpleadoTO = ComportamientoPuesto
					.preparaAgregarPuesto(AgregarPuesto);
			this.ui.gridLayout.addWidget(AgregarPuesto.dockWidgetPuesto);
			ComportamientoPuesto
					.agregarTabla(AgregarPuesto.tableWidgetPuestoPuesto);

			AgregarPuesto.pushButtonCancelarPuesto.clicked.connect(this,
					"slotCancelarPuestoA()");
			AgregarPuesto.comboBoxTipoEmpPuestoPuesto.activatedIndex.connect(
					this, "seleccionTipoEmpleadoAlta(int)");
			AgregarPuesto.comboBoxTipoEmp2Puesto.activatedIndex.connect(this,
					"seleccionTipoEmpleadoAlta2(int)");
			AgregarPuesto.comboBoxPuestoPuesto.activatedIndex.connect(this,
					"seleccionPuestoAlta1(int)");
			AgregarPuesto.comboBoxPuesto2Puesto.editTextChanged.connect(this,
					"cambioComboBoxAlta(String)");
			AgregarPuesto.pushButtonBuscarPuesto.clicked.connect(this,
					"buscarAgregar()");
			AgregarPuesto.pushButtonBuscarPuesto.pressed.connect(this,
					"buscarAgregar()");
			AgregarPuesto.pushButtonLimpiarPuesto.clicked.connect(this,
					"limpiarAgregar()");
			AgregarPuesto.pushButtonLimpiarPuesto.pressed.connect(this,
					"limpiarAgregar()");
			AgregarPuesto.pushButtonValorPuesto.clicked.connect(this,
					"agregar()");

		} else
			AgregarPuesto.dockWidgetPuesto.setHidden(false);

		AgregarPuesto.tableWidgetPuestoPuesto.disconnect();
		puestoTOAlta = ComportamientoPuesto.tablaPrincipal(AgregarPuesto);
		AgregarPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
				"slotNoEditarAPuesto(int,int)");

	}

	public void cargarModificarPuesto() {
		desactivaDockets();
		if (ModificarPuesto == null) {
			ModificarPuesto = new Ui_Puesto();
			ModificarPuesto.setupUi(this);
			this.setWindowTitle("Módulo Empleado");
			// this.setMinimumSize(550, 450);

			tiposEmpleadoTO = ComportamientoPuesto
					.preparaModificarPuesto(ModificarPuesto);
			this.ui.gridLayout.addWidget(ModificarPuesto.dockWidgetPuesto);
			ComportamientoPuesto
					.agregarTabla(ModificarPuesto.tableWidgetPuestoPuesto);

			ModificarPuesto.pushButtonCancelarPuesto.clicked.connect(this,
					"slotCancelarPuestoM()");
			ModificarPuesto.comboBoxTipoEmpPuestoPuesto.activatedIndex.connect(
					this, "seleccionTipoEmpleadoModifica(int)");
			ModificarPuesto.comboBoxTipoEmp2Puesto.currentIndexChanged.connect(
					this, "seleccionTipoEmpleadoModifica2(int)");
			ModificarPuesto.comboBoxPuestoPuesto.activatedIndex.connect(this,
					"seleccionPuestoModifica1(int)");
			ModificarPuesto.comboBoxPuesto2Puesto.currentIndexChanged.connect(
					this, "seleccionPuestoModifica2(int)");

			ModificarPuesto.comboBoxPuesto2Puesto.editTextChanged.connect(this,
					"cambioComboBoxModifica(String)");
			ModificarPuesto.pushButtonBuscarPuesto.clicked.connect(this,
					"buscarModifica()");
			ModificarPuesto.pushButtonBuscarPuesto.pressed.connect(this,
					"buscarModifica()");
			ModificarPuesto.pushButtonLimpiarPuesto.clicked.connect(this,
					"limpiarModifica()");
			ModificarPuesto.pushButtonLimpiarPuesto.pressed.connect(this,
					"limpiarModifica()");
			ModificarPuesto.pushButtonValorPuesto.clicked.connect(this,
					"modificar()");
			ModificarPuesto.tableWidgetPuestoPuesto.cellClicked.connect(this,
					"seleccionCeldaModificar()");

		} else
			ModificarPuesto.dockWidgetPuesto.setHidden(false);

		ModificarPuesto.dockWidgetPuesto.setGeometry(5, 20, 546, 446);
		ModificarPuesto.tableWidgetPuestoPuesto.disconnect();
		puestoTOCambio = ComportamientoPuesto.tablaPrincipal(ModificarPuesto);
		ModificarPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
				"slotNoEditarMPuesto(int,int)");
		ModificarPuesto.tableWidgetPuestoPuesto.clicked.connect(this,
				"seleccionCeldaModificar()");

	}

	public void cargarBajaPuesto() {
		desactivaDockets();
		if (BajaPuesto == null) {
			BajaPuesto = new Ui_Puesto();
			BajaPuesto.setupUi(this);
			this.setWindowTitle("Módulo Empleado");
			// this.setMinimumSize(550, 450);

			ComportamientoPuesto.preparaBajaPuesto(BajaPuesto);
			this.ui.gridLayout.addWidget(BajaPuesto.dockWidgetPuesto);
			ComportamientoPuesto
					.agregarTabla(BajaPuesto.tableWidgetPuestoPuesto);

			BajaPuesto.pushButtonCancelarPuesto.clicked.connect(this,
					"slotCancelarPuestoB()");
			BajaPuesto.comboBoxTipoEmpPuestoPuesto.activatedIndex.connect(this,
					"seleccionTipoEmpleadoBaja(int)");
			/*
			 * BajaPuesto.comboBoxTipoEmp2Puesto.currentIndexChanged.connect(
			 * this, "seleccionTipoEmpleadoBaja2(int)");
			 */
			BajaPuesto.comboBoxPuestoPuesto.activatedIndex.connect(this,
					"seleccionPuestoBaja1(int)");

			BajaPuesto.pushButtonBuscarPuesto.clicked.connect(this,
					"buscarBaja()");
			BajaPuesto.pushButtonBuscarPuesto.pressed.connect(this,
					"buscarBaja()");
			BajaPuesto.pushButtonLimpiarPuesto.clicked.connect(this,
					"limpiarBaja()");
			BajaPuesto.pushButtonLimpiarPuesto.pressed.connect(this,
					"limpiarBaja()");
			BajaPuesto.pushButtonValorPuesto.clicked.connect(this, "baja()");
			BajaPuesto.tableWidgetPuestoPuesto.cellClicked.connect(this,
					"seleccionCeldaBaja()");

		} else
			BajaPuesto.dockWidgetPuesto.setHidden(false);
		BajaPuesto.dockWidgetPuesto.setGeometry(5, 20, 546, 446);

		BajaPuesto.tableWidgetPuestoPuesto.disconnect();
		puestoTOBaja = ComportamientoPuesto.tablaPrincipal(BajaPuesto);
		BajaPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
				"slotNoEditarBPuesto(int,int)");
		BajaPuesto.tableWidgetPuestoPuesto.clicked.connect(this,
				"seleccionCeldaBaja()");
	}

	/***************************************************************************
	 * Eventos Puesto
	 */

	public void desactivaDockets() {
		try {
			if (EstablecerAsistencia != null)
				EstablecerAsistencia.asistencia.dockWidgetAsistencia
						.setHidden(true);
			
			if (ConsultarAsistencia != null)
				ConsultarAsistencia.asistencia.dockWidgetAsistencia
						.setHidden(true);

			if (AgregarCuenta != null)
				AgregarCuenta.cuenta.dockWidgetCuenta.setHidden(true);
			if (ConsultarCuenta != null)
				ConsultarCuenta.cuenta.dockWidgetCuenta.setHidden(true);
			if (BajaCuenta != null)
				BajaCuenta.cuenta.dockWidgetCuenta.setHidden(true);
			if (ModificarCuenta != null)
				ModificarCuenta.setHidden(true);

			if (AgregarDiaFestivo != null)
				AgregarDiaFestivo.diaFestivo.dockWidgetDiaFestivo
						.setHidden(true);

			if (ModificarDiaFestivo != null)
				ModificarDiaFestivo.diaFestivo.dockWidgetDiaFestivo
						.setHidden(true);
			if (ConsultarDiaFestivo != null)
				ConsultarDiaFestivo.diaFestivo.dockWidgetDiaFestivo
						.setHidden(true);
			if (BajaDiaFestivo != null)
				BajaDiaFestivo.diaFestivo.dockWidgetDiaFestivo.setHidden(true);

			if (AgregarEmpleado != null)
				AgregarEmpleado.empleado.dockWidgetEmpleado2.setHidden(true);
			if (ModificarEmpleado != null)
				ModificarEmpleado.empleado.dockWidgetEmpleado2.setHidden(true);
			if (ConsultarEmpleado != null)
				ConsultarEmpleado.empleado.dockWidgetEmpleado2.setHidden(true);
			if (BajaEmpleado != null)
				BajaEmpleado.empleado.dockWidgetEmpleado2.setHidden(true);

			if (CrearHorario != null)
				CrearHorario.horario1.dockWidgetHorario1.setHidden(true);
			if (ModificarHorario != null)
				ModificarHorario.horario1.dockWidgetHorario1.setHidden(true);
			if (ConsultarHorario != null)
				ConsultarHorario.horario2.dockWidgetHorario2.setHidden(true);
			if (EliminarHorario != null)
				EliminarHorario.horario2.dockWidgetHorario2.setHidden(true);

			if (AgregarPuesto != null)
				AgregarPuesto.dockWidgetPuesto.setHidden(true);

			if (ModificarPuesto != null)
				ModificarPuesto.dockWidgetPuesto.setHidden(true);
			if (BajaPuesto != null)
				BajaPuesto.dockWidgetPuesto.setHidden(true);

			if (AgregarTurno != null)
				AgregarTurno.turno.dockWidgetTurno.setHidden(true);
			if (ConsultarTurno != null)
				ConsultarTurno.turno.dockWidgetTurno.setHidden(true);
			if (BajaTurno != null)
				BajaTurno.turno.dockWidgetTurno.setHidden(true);
			if (ModificarTurno != null)
				ModificarTurno.turno.dockWidgetTurno.setHidden(true);
		} catch (Exception ex) {

		}
	}

	public void slotNoEditarAPuesto(int x, int y) {
		ComportamientoPuesto.noEditarPuesto(x, y,
				AgregarPuesto.tableWidgetPuestoPuesto, puestoTOAlta);
	}

	public void slotNoEditarMPuesto(int x, int y) {
		ComportamientoPuesto.noEditarPuesto(x, y,
				ModificarPuesto.tableWidgetPuestoPuesto, puestoTOCambio);
	}

	public void slotNoEditarBPuesto(int x, int y) {

		ComportamientoPuesto.noEditarPuesto(x, y,
				BajaPuesto.tableWidgetPuestoPuesto, puestoTOBaja);
	}

	public void slotCancelarPuestoA() {
		AgregarPuesto.comboBoxPuesto2Puesto.clearEditText();
		desactivaDockets();
	}

	public void slotCancelarPuestoM() {
		ModificarPuesto.comboBoxPuesto2Puesto.clearEditText();
		desactivaDockets();
	}

	public void slotCancelarPuestoB() {
		BajaPuesto.comboBoxPuesto2Puesto.clearEditText();
		desactivaDockets();
	}

	public void seleccionTipoEmpleadoAlta(int indice) {
		puesto1TOAlta = seleccionTipoEmpleado1(indice, AgregarPuesto);
	}

	public void seleccionTipoEmpleadoAlta2(int indice) {
		seleccionTipoEmpleado2(indice, AgregarPuesto);
		AgregarPuesto.textEditDescripcionTipoempPuesto
				.setText(tiposEmpleadoTO[indice].getDescripcion());
	}

	public void seleccionTipoEmpleadoModifica(int indice) {
		puesto1TOCambio = seleccionTipoEmpleado1(indice, ModificarPuesto);
	}

	public void seleccionTipoEmpleadoModifica2(int indice) {
		puesto2TOCambio = seleccionTipoEmpleado2(indice, ModificarPuesto);
		ModificarPuesto.textEditDescripcionPuestoPuesto.clear();
		ModificarPuesto.textEditDescripcionTipoempPuesto
				.setText(tiposEmpleadoTO[indice].getDescripcion());
		if (puesto2TOCambio == null)
			ModificarPuesto.comboBoxPuesto2Puesto.setEnabled(false);
	}

	public void seleccionTipoEmpleadoBaja(int indice) {
		puesto1TOBaja = seleccionTipoEmpleado1(indice, BajaPuesto);
	}

	public void seleccionTipoEmpleadoBaja2(int indice) {
		puesto2TOBaja = seleccionTipoEmpleado2(indice, BajaPuesto);
		BajaPuesto.textEditDescripcionPuestoPuesto.clear();
		BajaPuesto.textEditDescripcionTipoempPuesto
				.setText(tiposEmpleadoTO[indice].getDescripcion());
		BajaPuesto.groupBoxDetalleTipoPuesto.setEnabled(false);
		BajaPuesto.groupBoxDetallePuesto.setEnabled(false);
		if (puesto2TOBaja == null)
			BajaPuesto.comboBoxPuesto2Puesto.setEnabled(false);
	}

	public void seleccionPuestoAlta1(int indice) {
		AgregarPuesto.tableWidgetPuestoPuesto.disconnect();
		puesto3TOAlta = seleccionPuesto1(indice, AgregarPuesto, puesto1TOAlta);
		puestoTOAlta = null;
		puestoTOAlta = new PuestoTO[1];
		puestoTOAlta[0] = puesto3TOAlta;
		AgregarPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
				"slotNoEditarAPuesto(int,int)");
	}

	public void seleccionPuestoAlta2(int indice) {
		// seleccionPuesto2(indice, AgregarPuesto, puesto2TOAlta);
	}

	public void seleccionPuestoModifica1(int indice) {
		ModificarPuesto.tableWidgetPuestoPuesto.disconnect();
		puesto3TOAlta = seleccionPuesto1(indice, ModificarPuesto,
				puesto1TOCambio);
		puestoTOCambio = null;
		puestoTOCambio = new PuestoTO[1];
		puestoTOCambio[0] = puesto3TOCambio;
		ModificarPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
				"slotNoEditarMPuesto(int,int)");
		ModificarPuesto.tableWidgetPuestoPuesto.clicked.connect(this,
				"seleccionCeldaModificar()");
	}

	public void seleccionPuestoModifica2(int indice) {
		if (puesto2TOCambio != null && indice >= 0)
			puesto4TOCambio = seleccionPuesto2(indice, ModificarPuesto,
					puesto2TOCambio);
	}

	public void seleccionPuestoBaja1(int indice) {
		BajaPuesto.tableWidgetPuestoPuesto.disconnect();
		puesto3TOBaja = seleccionPuesto1(indice, BajaPuesto, puesto1TOBaja);
		puestoTOBaja = null;
		puestoTOBaja = new PuestoTO[1];
		puestoTOBaja[0] = puesto3TOBaja;
		BajaPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
				"slotNoEditarBPuesto(int,int)");
		BajaPuesto.tableWidgetPuestoPuesto.clicked.connect(this,
				"seleccionCeldaBaja()");
	}

	public void seleccionPuestoBaja2(int indice) {
		if (puesto2TOBaja != null && indice >= 0)
			puesto4TOBaja = seleccionPuesto2(indice, BajaPuesto, puesto2TOBaja);
	}

	public void cambioComboBoxAlta(String cadena) {
		cambioComboBox(cadena, AgregarPuesto);
	}

	public void cambioComboBoxModifica(String cadena) {
		cambioComboBox(cadena, ModificarPuesto);
	}

	public void buscarAgregar() {
		AgregarPuesto.tableWidgetPuestoPuesto.disconnect();
		puestoTOAlta = ComportamientoPuesto.buscar(AgregarPuesto, puestoTOAlta);
		AgregarPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
				"slotNoEditarAPuesto(int,int)");
	}

	public void buscarModifica() {
		ModificarPuesto.tableWidgetPuestoPuesto.disconnect();
		puestoTOCambio = ComportamientoPuesto.buscar(ModificarPuesto,
				puestoTOCambio);
		ModificarPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
				"slotNoEditarMPuesto(int,int)");
		ModificarPuesto.tableWidgetPuestoPuesto.clicked.connect(this,
				"seleccionCeldaModificar()");
	}

	public void buscarBaja() {
		BajaPuesto.tableWidgetPuestoPuesto.disconnect();
		puestoTOBaja = ComportamientoPuesto.buscar(BajaPuesto, puestoTOBaja);
		BajaPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
				"slotNoEditarBPuesto(int,int)");
		BajaPuesto.tableWidgetPuestoPuesto.clicked.connect(this,
				"seleccionCeldaBaja()");
		BajaPuesto.pushButtonValorPuesto.setEnabled(false);
	}

	public void limpiarAgregar() {
		AgregarPuesto.tableWidgetPuestoPuesto.disconnect();
		puestoTOAlta = ComportamientoPuesto.limpiar(AgregarPuesto);
		AgregarPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
				"slotNoEditarAPuesto(int,int)");
	}

	public void limpiarModifica() {
		ModificarPuesto.tableWidgetPuestoPuesto.disconnect();
		puestoTOCambio = ComportamientoPuesto.limpiar(ModificarPuesto);
		ModificarPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
				"slotNoEditarMPuesto(int,int)");
		ModificarPuesto.tableWidgetPuestoPuesto.clicked.connect(this,
				"seleccionCeldaModificar()");
	}

	public void limpiarBaja() {
		BajaPuesto.tableWidgetPuestoPuesto.disconnect();
		puestoTOBaja = ComportamientoPuesto.limpiar(BajaPuesto);
		BajaPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
				"slotNoEditarBPuesto(int,int)");
		BajaPuesto.tableWidgetPuestoPuesto.clicked.connect(this,
				"seleccionCeldaBaja()");
		BajaPuesto.pushButtonValorPuesto.setEnabled(false);
	}

	public void agregar() {
		PuestoTO PuestoAgregarTO = new PuestoTO();
		PuestoAgregarTO
				.setTipoEmpleadoTO(tiposEmpleadoTO[AgregarPuesto.comboBoxTipoEmp2Puesto
						.currentIndex()]);
		PuestoAgregarTO.setNombre(AgregarPuesto.comboBoxPuesto2Puesto
				.currentText());
		PuestoAgregarTO
				.setDescripcion(AgregarPuesto.textEditDescripcionPuestoPuesto
						.toPlainText());
		PuestoAgregarTO.setActivo(true);
		PuestoAgregarTO = (PuestoTO) ConexionConNegocios.invocaServicio(
				"agregarPuesto", PuestoAgregarTO, PuestoTO.class);
		if (PuestoAgregarTO.getTipoError() > 0) {
			Utilerias.mostrarMensajeError(this, PuestoAgregarTO);
		} else {
			AgregarPuesto.pushButtonValorPuesto.setEnabled(false);
			AgregarPuesto.tableWidgetPuestoPuesto.disconnect();
			ComportamientoPuesto.preparaAgregarPuesto(AgregarPuesto);
			puestoTOAlta = ComportamientoPuesto.tablaPrincipal(AgregarPuesto);
			AgregarPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
					"slotNoEditarAPuesto(int,int)");
		}
	}

	public void modificar() {
		PuestoTO PuestoModificarTO = new PuestoTO();
		Puesto2TO puestoEnviarTO = new Puesto2TO();
		PuestoTO[] puestoAuxTO = new PuestoTO[2];
		puestoAuxTO[0] = puesto4TOCambio;
		PuestoModificarTO
				.setTipoEmpleadoTO(tiposEmpleadoTO[ModificarPuesto.comboBoxTipoEmp2Puesto
						.currentIndex()]);
		PuestoModificarTO.setNombre(ModificarPuesto.comboBoxPuesto2Puesto
				.currentText());
		PuestoModificarTO
				.setDescripcion(ModificarPuesto.textEditDescripcionPuestoPuesto
						.toPlainText());
		PuestoModificarTO.setActivo(true);
		PuestoModificarTO.setIdPuesto(puesto4TOCambio.getIdPuesto());
		puestoAuxTO[1] = PuestoModificarTO;
		puestoEnviarTO.setPuestoTO(puestoAuxTO);

		PuestoModificarTO = (PuestoTO) ConexionConNegocios.invocaServicio(
				"modificarPuesto", puestoEnviarTO, PuestoTO.class);

		/*
		 * 
		 * 
		 * PuestoModificarTO =PuestoBO.modificarPuesto(puestoEnviarTO);
		 */

		if (PuestoModificarTO.getTipoError() > 0) {
			Utilerias.mostrarMensajeError(this, PuestoModificarTO);
		} else {
			PuestoModificarTO.setTipoError(TransferObject.INFO);
			Utilerias.mostrarMensajeError(this, PuestoModificarTO);
			ModificarPuesto.pushButtonValorPuesto.setEnabled(false);
			ModificarPuesto.tableWidgetPuestoPuesto.disconnect();
			ModificarPuesto.comboBoxTipoEmpPuestoPuesto.disconnect();
			ModificarPuesto.comboBoxTipoEmp2Puesto.disconnect();
			ComportamientoPuesto.preparaModificarPuesto(ModificarPuesto);
			puestoTOCambio = ComportamientoPuesto
					.tablaPrincipal(ModificarPuesto);
			ModificarPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
					"slotNoEditarMPuesto(int,int)");
			ModificarPuesto.tableWidgetPuestoPuesto.clicked.connect(this,
					"seleccionCeldaModificar()");
			ModificarPuesto.comboBoxTipoEmpPuestoPuesto.activatedIndex.connect(
					this, "seleccionTipoEmpleadoModifica(int)");
			ModificarPuesto.comboBoxTipoEmp2Puesto.currentIndexChanged.connect(
					this, "seleccionTipoEmpleadoModifica2(int)");
		}

	}

	public void baja() {
		PuestoTO puestoBajaTO = (PuestoTO) ConexionConNegocios.invocaServicio(
				"bajaPuesto", puesto4TOBaja.getIdPuesto(), PuestoTO.class);
		if (puestoBajaTO.getTipoError() > 0) {
			Utilerias.mostrarMensajeError(this, puestoBajaTO);
		} else {
			puestoBajaTO.setTipoError(TransferObject.INFO);
			Utilerias.mostrarMensajeError(this, puestoBajaTO);
			BajaPuesto.pushButtonValorPuesto.setEnabled(false);
			BajaPuesto.tableWidgetPuestoPuesto.disconnect();
			BajaPuesto.comboBoxTipoEmpPuestoPuesto.disconnect();
			BajaPuesto.comboBoxTipoEmp2Puesto.disconnect();
			ComportamientoPuesto.preparaModificarPuesto(BajaPuesto);
			puestoTOBaja = ComportamientoPuesto.tablaPrincipal(BajaPuesto);
			BajaPuesto.tableWidgetPuestoPuesto.cellChanged.connect(this,
					"slotNoEditarBPuesto(int,int)");
			BajaPuesto.tableWidgetPuestoPuesto.clicked.connect(this,
					"seleccionCeldaBaja()");
			BajaPuesto.comboBoxTipoEmpPuestoPuesto.activatedIndex.connect(this,
					"seleccionTipoEmpleadoBaja(int)");
			/*
			 * ModificarPuesto.comboBoxTipoEmp2Puesto.currentIndexChanged.connect(
			 * this, "seleccionTipoEmpleadoModifica2(int)");
			 */
		}

	}

	public void seleccionCeldaModificar() {
		puesto4TOCambio = ComportamientoPuesto.seleccionCelda(ModificarPuesto,
				puestoTOCambio);

	}

	public void seleccionCeldaBaja() {
		puesto4TOBaja = ComportamientoPuesto.seleccionCelda(BajaPuesto,
				puestoTOBaja);
		BajaPuesto.pushButtonValorPuesto.setEnabled(true);

	}

	/** ************************************************************ */

	/***************************************************************************
	 * Metodos Puesto
	 */

	public PuestoTO seleccionTipoEmpleado1(int indice, Ui_Puesto puesto) {
		PuestoTO puestoTOABC = llenarPuesto(indice, puesto.comboBoxPuestoPuesto);
		puesto.comboBoxPuestoPuesto.setEnabled(true);
		puesto.pushButtonBuscarPuesto.setEnabled(false);
		puesto.groupBoxDetallePuesto.setEnabled(false);
		puesto.pushButtonBuscarPuesto.setEnabled(true);
		puesto.pushButtonLimpiarPuesto.setEnabled(true);

		return puestoTOABC;
	}

	public PuestoTO seleccionTipoEmpleado2(int indice, Ui_Puesto puesto) {

		PuestoTO puestoTOABC = llenarPuesto(indice,
				puesto.comboBoxPuesto2Puesto);
		puesto.comboBoxPuesto2Puesto.setEnabled(true);
		puesto.pushButtonValorPuesto.setEnabled(false);
		puesto.textEditDescripcionPuestoPuesto.setEnabled(false);
		return puestoTOABC;

	}

	public PuestoTO llenarPuesto(int indice, QComboBox comboBox) {
		comboBox.clear();
		PuestoTO puestoTOABC = (PuestoTO) ConexionConNegocios.invocaServicio(
				"obtenerPuestoActivoporTipoEmpleado", (short) (indice + 1),
				PuestoTO.class);
		if (puestoTOABC != null) {
			for (int x = 0; x < puestoTOABC.getListNombre().length; x++) {
				comboBox.addItem(puestoTOABC.getListNombre()[x]);
			}
		}
		comboBox.setCurrentIndex(-1);
		return puestoTOABC;
	}

	public PuestoTO seleccionPuesto1(int indice, Ui_Puesto puesto,
			PuestoTO puesto1TO) {
		puesto.tableWidgetPuestoPuesto.clearContents();
		puesto.pushButtonBuscarPuesto.setEnabled(true);
		puesto.pushButtonLimpiarPuesto.setEnabled(true);
		PuestoTO puestoTOABC = (PuestoTO) ConexionConNegocios.invocaServicio(
				"encontrarPuestoporIdPuesto",
				puesto1TO.getListIdPuesto()[indice], PuestoTO.class);

		puesto.tableWidgetPuestoPuesto.clear();
		ComportamientoPuesto.agregarTabla(puesto.tableWidgetPuestoPuesto);
		puesto.tableWidgetPuestoPuesto.setRowCount(1);
		ComportamientoPuesto.llenarTablaBasico(puesto.tableWidgetPuestoPuesto,
				puestoTOABC, 0);
		puesto.groupBoxDetallePuesto.setEnabled(true);
		return puestoTOABC;
	}

	public PuestoTO seleccionPuesto2(int indice, Ui_Puesto puesto,
			PuestoTO puesto2TO) {

		if (puesto2TO != null) {
			PuestoTO puestoTOABC = (PuestoTO) ConexionConNegocios
					.invocaServicio("encontrarPuestoporIdPuesto", puesto2TO
							.getListIdPuesto()[indice], PuestoTO.class);
			if (puestoTOABC != null)
				puesto.textEditDescripcionPuestoPuesto.setText(puestoTOABC
						.getDescripcion());
			return puestoTOABC;
		} else
			return null;

	}

	public void cambioComboBox(String cadena, Ui_Puesto puesto) {
		if (cadena.length() < 80) {
			if (cadena != null && cadena.replace(" ", "") != ""
					&& cadena.replace(" ", "").length() > 0) {
				puesto.pushButtonValorPuesto.setEnabled(true);
				puesto.textEditDescripcionPuestoPuesto.setEnabled(true);

			} else {
				puesto.pushButtonValorPuesto.setEnabled(false);
				puesto.textEditDescripcionPuestoPuesto.setEnabled(false);
			}
		} else {
			puesto.comboBoxPuesto2Puesto.setEditText(cadena.substring(0, 79));
		}
	}

	/** ************************************************************ */

	/***************************************************************************
	 * Eventos Turno
	 */
	public void cargarAgregarTurno() {

		if (AgregarTurno == null) {
			AgregarTurno = new ComportamientoTurno();
			AgregarTurno.titulo = "Agregar Turno";
		}
		AgregarTurno.agregarTurno(ui);

	}

	public void cargarConsultarTurno() {
		if (ConsultarTurno == null) {
			ConsultarTurno = new ComportamientoTurno();
			ConsultarTurno.titulo = "Consultar Turno";
		}
		ConsultarTurno.consultarTurno(ui);
	}

	public void cargarBajaTurno() {
		if (BajaTurno == null) {
			BajaTurno = new ComportamientoTurno();
			BajaTurno.titulo = "Dar de Baja Turno";
		}
		BajaTurno.bajaTurno(ui);
	}

	public void cargarModificarTurno() {
		if (ModificarTurno == null) {
			ModificarTurno = new ComportamientoTurno();
			ModificarTurno.titulo = "Modificar Turno";
		}
		ModificarTurno.modificarTurno(ui);

	}

	/** ************************************************************ */

	/***************************************************************************
	 * Eventos Empleado
	 */
	public void cargarAgregarEmpleado() {

		if (AgregarEmpleado == null) {
			AgregarEmpleado = new ComportamientoEmpleado();
			AgregarEmpleado.titulo = "Agregar Empleado";
		}
		AgregarEmpleado.agregarEmpleado(ui);

	}

	public void cargarConsultarEmpleado() {
		if (ConsultarEmpleado == null) {
			ConsultarEmpleado = new ComportamientoEmpleado();
			ConsultarEmpleado.titulo = "Consultar Empleado";
		}
		ConsultarEmpleado.consultarEmpleado(ui);
	}

	public void cargarBajaEmpleado() {
		if (BajaEmpleado == null) {
			BajaEmpleado = new ComportamientoEmpleado();
			BajaEmpleado.titulo = "Dar de Baja Empleado";
		}
		BajaEmpleado.bajaEmpleado(ui);
	}

	public void cargarModificarEmpleado() {
		if (ModificarEmpleado == null) {
			ModificarEmpleado = new ComportamientoEmpleado();
			ModificarEmpleado.titulo = "Modificar Empleado";
		}
		ModificarEmpleado.modificarEmpleado(ui);

	}

	public EmpleadoPrincipal(QWidget parent) {
		ui.setupUi(this);
	}

	/** ************************************************************ */

	/***************************************************************************
	 * Eventos Cuenta
	 */

	public void cargarAgregarCuenta() {

		if (AgregarCuenta == null) {
			AgregarCuenta = new ComportamientoCuenta();
			AgregarCuenta.titulo = "Agregar Cuenta";
		}
		AgregarCuenta.agregarCuenta(ui);

	}

	public void cargarConsultarCuenta() {
		if (ConsultarCuenta == null) {
			ConsultarCuenta = new ComportamientoCuenta();
			ConsultarCuenta.titulo = "Consultar Cuenta";
		}
		ConsultarCuenta.consultarCuenta(ui);
	}

	public void cargarBajaCuenta() {
		if (BajaCuenta == null) {
			BajaCuenta = new ComportamientoCuenta();
			BajaCuenta.titulo = "Dar de Baja Cuenta";
			BajaCuenta.banderaBaja = true;
		}
		BajaCuenta.bajaCuenta(ui);
	}

	public void cargarModificarCuenta() {
		if (ModificarCuenta == null) {
			ModificarCuenta = new ComportamientoCuenta();
			ModificarCuenta.titulo = "Modificar Cuenta";
			ModificarCuenta.usuarioTO = this.usuarioTO;
		}
		ModificarCuenta.modificarCuenta(ui, "Modificar Cuenta", false);
	}

	/** ************************************************************ */

	/***************************************************************************
	 * Eventos DiaFestivo
	 */

	public void cargarAgregarDiaFestivo() {

		if (AgregarDiaFestivo == null) {
			AgregarDiaFestivo = new ComportamientoDiaFestivo2();
			AgregarDiaFestivo.titulo = "Agregar Dia Festivo";
		}
		AgregarDiaFestivo.agregarDiaFestivo(ui);

	}

	public void cargarConsultarDiaFestivo() {
		if (ConsultarDiaFestivo == null) {
			ConsultarDiaFestivo = new ComportamientoDiaFestivo2();
			ConsultarDiaFestivo.titulo = "Consultar Dia Festivo";
			ConsultarDiaFestivo.banderaConsulta = true;
		}
		ConsultarDiaFestivo.consultarDiaFestivo(ui);
	}

	public void cargarBajaDiaFestivo() {
		if (BajaDiaFestivo == null) {
			BajaDiaFestivo = new ComportamientoDiaFestivo2();
			BajaDiaFestivo.titulo = "Dar de Baja Dia Festivo";
			BajaDiaFestivo.banderaBaja = true;
		}
		BajaDiaFestivo.bajaDiaFestivo(ui);
	}

	public void cargarModificarDiaFestivo() {
		if (ModificarDiaFestivo == null) {
			ModificarDiaFestivo = new ComportamientoDiaFestivo2();
			ModificarDiaFestivo.titulo = "Modificar Dia Festivo";
			ModificarDiaFestivo.banderaModificar = true;
		}
		ModificarDiaFestivo.modificarDiaFestivo(ui);
	}

	/** ************************************************************ */

	/***************************************************************************
	 * Eventos Asistencia
	 */

	public void cargarEstablecerAsistencia() {

		if (EstablecerAsistencia == null) {
			EstablecerAsistencia = new ComportamientoAsistencia();
			EstablecerAsistencia.titulo = "Establecer Asistencia";
		}
		EstablecerAsistencia.agregarAsistencia(ui, usuarioTO);
	}

	public void cargarConsultarAsistencia() {
		if (ConsultarAsistencia == null) {
			ConsultarAsistencia = new ComportamientoAsistencia();
			ConsultarAsistencia.titulo = "Consultar Asistencia";
			ConsultarAsistencia.banderaConsulta = true;
		}
		ConsultarAsistencia.consultarAsistencia(ui, usuarioTO);
	}

	
	/** ************************************************************ */

	/***************************************************************************
	 * Eventos Horario
	 */

	public void cargarEstablecerHorario() {

		if (CrearHorario == null) {
			CrearHorario = new ComportamientoHorario();
			CrearHorario.titulo = "Crear Horario";
		}
		CrearHorario.agregarHorario(ui, usuarioTO,null);
	}

	public void cargarModificarHorario() {
		if (ModificarHorario == null) {
			ModificarHorario = new ComportamientoHorario();
			ModificarHorario.titulo = "Modifición de Horario";
			ModificarHorario.banderaModificar = true;
		}
		ModificarHorario.ModificarHorario(ui, usuarioTO);
	}
	
	public void cargarConsultarHorario() {
		if (ConsultarHorario == null) {
			ConsultarHorario = new ComportamientoHorario();
			ConsultarHorario.titulo = "Consultar Horario";
			ConsultarHorario.banderaConsulta = true;
		}
		ConsultarHorario.consultarHorario(ui, usuarioTO);
	}

	public void cargarBajaHorario() {
		if (EliminarHorario == null) {
			EliminarHorario = new ComportamientoHorario();
			EliminarHorario.titulo = "Remover Horario";
			EliminarHorario.banderaBaja = true;
		}
		EliminarHorario.bajaHorario(ui, usuarioTO);
	}
	
	protected void closeEvent(QCloseEvent e) {
		this.ventanaInicio.setEnabled(true);
	}
}
